<!DOCTYPE html>
<html lang="zh-cn" itemscope itemtype="http://schema.org/WebPage">
  <head>
    

  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

  <title>panda power! - panda power!</title>
  <meta name="author" content="casper chen"/><script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "name": "panda power!",
    
    "url": "https:\/\/cyboca.ga"
}
</script><script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Organization",
  "name": "",
  "url": "https:\/\/cyboca.ga"
  
  
  
  
}
</script>

<meta property="og:title" content="panda power!" />
<meta property="og:image" content="https://cyboca.ga/img/avatar-icon.png" />
<meta property="og:url" content="https://cyboca.ga/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="panda power!" />

  <meta name="twitter:title" content="panda power!" />
  <meta name="twitter:image" content="https://cyboca.ga/img/avatar-icon.png" />
  <meta name="twitter:card" content="summary" />
  <link href='https://cyboca.ga/img/favicon.ico' rel='icon' type='image/x-icon'/>
  <meta name="generator" content="Hugo 0.58.3" />
  <link rel="alternate" href="https://cyboca.ga/index.xml" type="application/rss+xml" title="panda power!"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><link rel="stylesheet" href="https://cyboca.ga/css/main.css" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" />
  <link rel="stylesheet" href="https://cyboca.ga/css/highlight.min.css" /><link rel="stylesheet" href="https://cyboca.ga/css/codeblock.css" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.css" integrity="sha384-h/L2W9KefUClHWaty3SLE5F/qvc4djlyR4qY3NUV5HGQBBW7stbcfff1+I/vmsHh" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/default-skin/default-skin.min.css" integrity="sha384-iD0dNku6PYSIQLyfTOpB06F2KCZJAKLOThS5HRe8b3ibhdEQ6eKsFf/EeFxdOt5R" crossorigin="anonymous">



  </head>
  <body>
    <nav class="navbar navbar-default navbar-fixed-top navbar-custom">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navbar">
        <span class="sr-only">切换导航</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="https://cyboca.ga">panda power!</a>
    </div>

    <div class="collapse navbar-collapse" id="main-navbar">
      <ul class="nav navbar-nav navbar-right">
        
          
            <li>
              <a title="文章" href="/categories/">文章</a>
            </li>
          
        
          
            <li>
              <a title="tags" href="/tags/">tags</a>
            </li>
          
        

        

        
      </ul>
    </div>

    
      <div class="avatar-container">
        <div class="avatar-img-border">
          <a title="panda power!" href="https://cyboca.ga">
            <img class="avatar-img" src="https://cyboca.ga/img/avatar-icon.png" alt="panda power!" />
          </a>
        </div>
      </div>
    

  </div>
</nav>




    


<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

<div class="pswp__bg"></div>

<div class="pswp__scroll-wrap">
    
    <div class="pswp__container">
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
    </div>
    
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
      
      <div class="pswp__counter"></div>
      <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
      <button class="pswp__button pswp__button--share" title="Share"></button>
      <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
      <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
      
      
      <div class="pswp__preloader">
        <div class="pswp__preloader__icn">
          <div class="pswp__preloader__cut">
            <div class="pswp__preloader__donut"></div>
          </div>
        </div>
      </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
      <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
      <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
</div>


  
  
  






  

  <header class="header-section ">
    
    <div class="intro-header no-img">
      <div class="container">
        <div class="row">
          <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            <div class="page-heading">
              
                <h1>panda power!</h1>
              
              
                <hr class="small">
              
              
              
            </div>
          </div>
        </div>
      </div>
    </div>
  </header>


    <div id="gotoTop"><a href="#"></a></div>
    
  <div role="main" class="container">
    <div class="row">
      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
        

        <div class="posts-list">
          
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/emiya/networkpolicy/">
        <h2 class="post-title">NetworkPolicy</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 December 15, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;2&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;264&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;emiya
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        NetWorkPolicy NetworkPloicy即网络策略（访问控制）；定义容器组(pod)与其他容器组以及endpoint进行通信；networkPolisy资源使用pod标签来选择pod，并定义规则
networkpolicy的实现需要特定的网络组件的支持;
1、实验环境准备 如上图所示：新建两个命令空间ns1和ns2并且为两个命名空间分别添加两个标签；创建上图中的三和deployment（过程略）用于测试网络连通性
2、NetworkPolicy配置以及测试 如上图所示默认情况下相同命令空间下的pod和不同命名空间下的pod是可以相互访问的，如果需要做特定的访问控制需要用到networkpolicy这一资源
2.1 deny all [root@node01 networkpolicy]# cat default-netpol.yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default namespace: ns1 spec: podSelector: {} policyTypes: - Ingress ingress: [root@node01 networkpolicy]# kubectl apply -f default-netpol.yaml networkpolicy.networking.k8s.io &#34;default&#34; created [root@node01 networkpolicy]# 如上图所示ns1命令空间下的pod网络被隔离了
2.2 allow all(默认) [root@node01 networkpolicy]# cat default-netpol.yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default namespace: ns1 spec: podSelector: {} policyTypes: - Ingress ingress: - {} [root@node01 networkpolicy]# kubectl apply -f default-netpol.
        <a href="https://cyboca.ga/post/emiya/networkpolicy/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/kubernetes/">Kubernetes</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/networkpolicy/">NetworkPolicy</a>&nbsp;
        
    </div>
    

</article>
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/frank/docker_daemon%E9%85%8D%E7%BD%AE%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%913/">
        <h2 class="post-title">Docker_Daemon配置官方文档翻译3</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 December 8, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;4&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;674&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;Frank
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        原文地址
Enable debugging  启动调试
 There are two ways to enable debugging. The recommended approach is to set the debug key to true in the daemon.json file. This method works for every Docker platform.
 这里两种方式开启调试，有两种启用调试的方法。推荐的方法是将debug关键词设置为true在daemon.json文件中的。该方法适用于每个Docker平台。
 1.Edit the daemon.json file, which is usually located in /etc/docker/. You may need to create this file, if it does not yet exist. On macOS or Windows, do not edit the file directly.
        <a href="https://cyboca.ga/post/frank/docker_daemon%E9%85%8D%E7%BD%AE%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%913/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/docker/">Docker</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/daemon/">Daemon</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/%E7%BF%BB%E8%AF%91/">翻译</a>&nbsp;
        
    </div>
    

</article>
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/frank/docker_daemon%E9%85%8D%E7%BD%AE%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%912/">
        <h2 class="post-title">Docker_Daemon配置官方文档翻译(2)</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 December 1, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;3&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;554&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;Frank
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        原文地址
Troubleshoot the daemon  找到并解决问题在守护进程上
 You can enable debugging on the daemon to learn about the runtime activity of the daemon and to aid in troubleshooting. If the daemon is completely non-responsive, you can also force a full stack trace of all threads to be added to the daemon log by sending the SIGUSR signal to the Docker daemon.
 你可以开启守护进程上的排错模式，它可以让你了解到运行时的活动记录，帮助你来排错。如果守护进程完全没有响应，你也可以通过发送SIGUSR信号，强制将所有线程的完整堆栈跟踪信息添加到守护进程日志
 (SIGUSR信号不理解)
Troubleshoot conflicts between the daemon.
        <a href="https://cyboca.ga/post/frank/docker_daemon%E9%85%8D%E7%BD%AE%E5%AE%98%E6%96%B9%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%912/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/docker/">Docker</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/daemon/">Daemon</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/%E7%BF%BB%E8%AF%91/">翻译</a>&nbsp;
        
    </div>
    

</article>
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/makemon/dce%E5%86%85%E6%A0%B8%E5%8F%82%E6%95%B0%E4%BC%98%E5%8C%96%E5%90%AB%E4%B9%89/">
        <h2 class="post-title">DCE内核参数优化含义</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 November 25, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;1&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;75&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;makemon
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        DCE内核参数优化含义 #开启ip6tables对bridge的数据处理 net.bridge.bridge-nf-call-ip6tables=1	#开启iptables对bridge的数据进行处理 net.bridge.bridge-nf-call-iptables=1 #开启arptables对bridge的数据进行处理 net.bridge.bridge-nf-call-arptables=1 #开启路由转发 net.ipv4.ip_forward=1 #设置防火墙最大连接跟踪数 net.netfilter.nf_conntrack_max=2097152 #nf_conntrack的tcp fin_wait记录时间30s net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30 #nf_conntrack的tcp time_wait记录时间30s net.netfilter.nf_conntrack_tcp_timeout_time_wait=30 #nf_conntrack的tcp close_wait记录时间15s net.netfilter.nf_conntrack_tcp_timeout_close_wait=15 #nf_conntrack的tcp established记录时间2小时 net.netfilter.nf_conntrack_tcp_timeout_established=7200 #保持在FIN-WAIT-2状态的时间为30s net.ipv4.tcp_fin_timeout=30 #开启SYN Cookies net.ipv4.tcp_syncookies=1 #表示SYN队列的长度 net.ipv4.tcp_max_syn_backlog=16384 #表示当keepalive起用的时候，TCP发送keepalive消息的频度，10分钟 net.ipv4.tcp_keepalive_time=600 #TCP发送keepalive探测以确定该连接已经断开的次数 net.ipv4.tcp_keepalive_probes=3 #探测消息发送的频率 net.ipv4.tcp_keepalive_intvl=30 #显示或设定 Linux 核心在回应 SYN 要求时会尝试多少次重新发送初始 SYN,ACK 封包后才决定放弃。 net.ipv4.tcp_synack_retries=3 #对于一个新建连接，内核要发送多少个 SYN 连接请求才决定放弃。 net.ipv4.tcp_syn_retries=3 #表示系统同时保持TIME_WAIT套接字的最大数量 net.ipv4.tcp_max_tw_buckets=36000 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭； net.ipv4.tcp_tw_reuse=1 #表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。 net.ipv4.tcp_tw_recycle=1 #允许使用的端口 &#34;net.ipv4.ip_local_port_range=1024 65000&#34; #定义了系统中每一个端口最大的监听队列的长度 net.core.somaxconn=65535 #该参数决定了, 每个网络接口接收数据包的速率比内核处理这些包的速率快时，允许送到队列的数据包的最大数目 net.core.netdev_max_backlog=16384 #系统所能处理不属于任何进程的TCP sockets最大数量 net.ipv4.tcp_max_orphans=8192	 网络参考
        <a href="https://cyboca.ga/post/makemon/dce%E5%86%85%E6%A0%B8%E5%8F%82%E6%95%B0%E4%BC%98%E5%8C%96%E5%90%AB%E4%B9%89/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/dce/">dce</a>&nbsp;
        
    </div>
    

</article>
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/emiya/headless-service/">
        <h2 class="post-title">Headless service</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 November 24, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;1&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;194&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;emiya
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        kubernetes之Headless 1、简介 service的cluster ip工作原理：kube-proxy 会监视 kubernetes 控制节点对 service 对象和 endpoints 对象的添加和移除。对每个 service，它会添加iptables 规则，从而捕获到达该 Service 的 clusterIP 和端口的请求，进而将请求重定向到 service 任意一组 backend pod 中; 对于每个 endpoints 对象，它也会添加iptables规则，这个规则会选择一个 backend pod 组合
headless service也是一种service，不同的是不会为headless service分配cluster ip，没有cluster ip，kube-proxy 并不处理此类服务，而且kubernetes也不会为它们进行负载均衡和路由
2、service和headless service对比 2.1为应用添加service并测试解析结果 [root@node01 headless]# cat svc-nginx.yaml apiVersion: v1 kind: Service metadata: name: nginx namespace: emiya spec: type: NodePort ports: - name: nginx protocol: TCP port: 80 nodePort: 30010 selector: app: nginx 部署并测试service name解析
如图所示，从上面的结果中我们可以看到虽然service有2个endpoint，但是dns查询时只会返回service的cluster-ip的地址。具体client访问的是哪个real server，是由iptables来决定的
        <a href="https://cyboca.ga/post/emiya/headless-service/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/kubernetes/">Kubernetes</a>&nbsp;
        
        <a href="https://cyboca.ga/tags/headless-service/">Headless service</a>&nbsp;
        
    </div>
    

</article>
          
            <article class="post-preview">
    <a href="https://cyboca.ga/post/emiya/nginx-conf/">
        <h2 class="post-title">Nginx Conf</h2>
        
        
        
    </a>

    <p class="post-meta">
        <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 November 24, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;2&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;269&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;emiya
    
  
  
</span>


    </p>
    <div class="post-entry">
        
        nginx.conf详解 [TOC]
1、user 示例:user nginx;
nginx worker进程运行的用户及用户组
语法：user username[groupname] 默认：user nobody nobody
user用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照&rdquo;user username;&ldquo;设置时，用户组名与用户名相同。 2、worker_processes 示例: worker_processes 4;
nginx worker进程个数：其数量直接影响性能。每个worker进程都是单线程的进程，他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用，那么，有多少CPU内核就应该配置多少个进程，反之，有可能出现阻塞式调用，那么，需要配置稍多一些的worker进程。
3、events{} 3.1、worker_connections 示例：worker_connetcions 1024;
定义每个work_process同时开启的最大连接数，即允许最多只能有这么多连接
3.2、accept_mutex 示例：accept_mutex on；
当某一个时刻只有一个网络连接请求服务器时，服务器上有多个睡眠的进程会被同时叫醒，这样会损耗一定的服务器性能。
Nginx中的accept_mutex设置为on，将会对多个Nginx进程（worker processer）接收连接时进行序列化，防止多个进程争抢资源。
默认就是on。
3.3multi_accept 示例：multi_accept on;
nginx worker processer可以做到同时接收多个新到达的网络连接，前提是把该参数设置为on。
默认为off，即每个worker process一次只能接收一个新到达的网络连接。
4、http{} 4.1、include 示例：include /etc/nginx/mime.types;
对配置文件所包含文件的设定，减少主配置文件的复杂度，相当于把部分设置放在别的地方，然后在包含进来，保持主配置文件的简洁
4.2、default_type 示例：default_type application/octet-stream;
默认文件类型，当文件类型未定义时候就使用这类设置的
4.3、log_format 示例：log_format main &lsquo;$remote_addr - $remote_user [$time_local] &ldquo;$request&rdquo; &lsquo;
​ &lsquo;$status $body_bytes_sent &ldquo;$http_referer&rdquo; &lsquo;
​ &lsquo;&ldquo;$http_user_agent&rdquo; &ldquo;$http_x_forwarded_for&rdquo;&lsquo;;
定义nginx日志内容格式，其中main为日志格式的名字，后面的为nginx的内部变量组成的一串字符串
4.4、access_log 示例：access_log /var/log/nginx/access.
        <a href="https://cyboca.ga/post/emiya/nginx-conf/" class="post-read-more">[阅读全文]</a>
        
    </div>

    
    <div class="blog-tags">
        
        <a href="https://cyboca.ga/tags/nginx/">Nginx</a>&nbsp;
        
    </div>
    

</article>
          
        </div>

        
          <ul class="pager main-pager">
            
            
              <li class="next">
                <a href="https://cyboca.ga/page/2/">下一页 &rarr;</a>
              </li>
            
          </ul>
        
      </div>
    </div>
  </div>

      
    <div class="page-meta">
  
  
  
</div>


  
<footer>
  <div class="container">
    <div class="row">
      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
        <ul class="list-inline text-center footer-links">
          
          
          <li>
            <a href="/index.xml" title="RSS">
              <span class="fa-stack fa-lg">
                <i class="fas fa-circle fa-stack-2x"></i>
                <i class="fas fa-rss fa-stack-1x fa-inverse"></i>
              </span>
            </a>
          </li>
          
        </ul>
        <p class="credits copyright text-muted">
          
            
              <a href="example.com">casper chen</a>
            
          

          &nbsp;&bull;&nbsp;&copy;
          
            2019
          

          
            &nbsp;&bull;&nbsp;
            <a href="https://cyboca.ga">panda power!</a>
          
        </p>
        
        <p class="credits theme-by text-muted">
          由 <a href="https://gohugo.io">Hugo v0.58.3</a> 强力驱动 &nbsp;&bull;&nbsp; 主题 <a href="https://github.com/halogenica/beautifulhugo">Beautiful Hugo</a> 移植自 <a href="https://deanattali.com/beautiful-jekyll/">Beautiful Jekyll</a>
          
        </p>
      </div>
    </div>
  </div>
</footer><script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.js" integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/contrib/auto-render.min.js" integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<script src="https://cyboca.ga/js/main.js"></script>
<script src="https://cyboca.ga/js/highlight.min.js"></script>
<script> hljs.initHighlightingOnLoad(); </script>
<script> $(document).ready(function() {$("pre.chroma").css("padding","0");}); </script><script> renderMathInElement(document.body); </script><script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.js" integrity="sha384-QELNnmcmU8IR9ZAykt67vGr9/rZJdHbiWi64V88fCPaOohUlHCqUD/unNN0BXSqy" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe-ui-default.min.js" integrity="sha384-m67o7SkQ1ALzKZIFh4CiTA8tmadaujiTa9Vu+nqPSwDOqHrDmxLezTdFln8077+q" crossorigin="anonymous"></script><script src="https://cyboca.ga/js/load-photoswipe.js"></script>









    
  </body>
</html>

